The present disclosure relates to multicast systems, methods, and computer program products.
Multicasting is the ability of one source or multiple sources to send a stream of information (e.g., audio, video or data) to a plurality of recipients, and often, a large number of recipients. One way multicasting is effected on the Internet is native network multicasting that uses an address range reserved for multicasting. If packets are transmitted into a multicast enabled network with a multicast address as the destination, then all computers subscribed to the multicast regardless of their location may receive the packets. Unfortunately, however, such native network multicasting isn't enabled throughout the entire Internet. For instance, native network multicasting may work inside a corporate or local area network but may not work in between different networks. Many ISPs, for instance, are not multicast enabled.
Another method of multicasting, application level multicasting, uses an overlay on top of a network, such as an IP network, to effect multicasting. Traffic is forwarded from a single source to multiple destinations through the overlay network. The overlay uses computing nodes arranged in trees, meshes, rings, arbitrary random topologies, and other distributed structures. Each node permits the receipt and rebroadcast, to other nodes, of messages. Overlays provide an advantage over all destination computers connecting to the single source because the use of nodes to forward information to other nodes offloads delivery requirements from a server to nodes (e.g., peer computers) in a network. For instance, a tree of nodes can be built, such that each node can transmit data to two or more other nodes. This permits dozens of participates with only one source stream.
Existing systems that permit application level multicasting are unable to use a native network multicast, even if it is available. Thus, application level and native networking multicasting have been alternative and mutually exclusive mechanisms for multicasting.